<?php
require_once "../lib/utils.php";

class AdministradorUsuarios{

	//Function that creates a new Aditional user by a MySQL transaction
	function createUser($idProcedencia, $numContrato, $tipoProc, $tipoUser, $nombreUsuario, $mail, $pass, $privilegios, $pregunta, $respuesta){		
		$password=md5($pass);
		$fechAct = getDateA();
		$fechPos = getDateM(3);		
		
		$db = new DB();
		
		$query = "BEGIN";
		$db->query($query);
		
		
		$query = "INSERT INTO usuarios ( Id_Usuario , Id_Procedencia , Numero_Contrato , Tipo_Procedencia , Tipo_Usuario , Nombre_Usuario , Correo_Electronico , Clave_Usuario , Fecha_Cambio , Fecha_Creacion , Status , Privilegios ) VALUES (NULL , $idProcedencia, '{$numContrato}', '{$tipoProc}', '{$tipoUser}', '{$nombreUsuario}', '{$mail}', '{$password}', '{$fechAct}', '{$fechPos}', 1, '{$privilegios}')";
		
//		echo $query;
		
		if($db->indeup($query)){

			$query = "INSERT INTO recuperacion_usuario ( Id_Usuario , Pregunta , Respuesta , Password ) VALUES (last_insert_id(), '{$pregunta}', '{$respuesta}', '{$pass}')";
		
				if($db->indeup($query)){
					$query = "COMMIT";
					$db->query($query);
					return true;
				}
		}

		return false;
	}


	function createUserAditional($idProcedencia, $numContrato, $tipoProc, $nombreUsuario, $mail, $pass, $privilegios, $pregunta, $respuesta){
	return $this->createUser($idProcedencia, $numContrato, $tipoProc, 'Adicional', $nombreUsuario, $mail, $pass, $privilegios, $pregunta, $respuesta);
	}


	function updateUserAditional($idUsuario, $idProcedencia, $tipoUs, $nombreUsuario, $mail, $pass, $privilegios, $pregunta, $respuesta){
		
		$db = new DB();
		
		$password=md5($pass);
		
		$query = "UPDATE usuarios U, recuperacion_usuario R SET
		U.Id_Procedencia = '{$idProcedencia}', U.Tipo_Usuario = '{$tipoUs}', U.Nombre_Usuario = '{$nombreUsuario}', U.Correo_Electronico = '{$mail}' , U.Clave_Usuario = '{$password}', U.Privilegios = '{$privilegios}', R.Pregunta = '{$pregunta}', R.Respuesta = '{$respuesta}', R.Password = '{$pass}' WHERE U.Id_Usuario = {$idUsuario} AND R.Id_Usuario = {$idUsuario} AND U.Id_Usuario = R.Id_Usuario";
		if($db->indeup($query)){

			return true;
		}

		return false;
	}

	function updateUser($idUsuario, $idProcedencia, $tipoProcedencia, $tipoUs, $nombreUsuario, $mail, $pass, $privilegios, $pregunta, $respuesta){
		
		$db = new DB();
		
		$password=md5($pass);
		
		$query = "UPDATE usuarios U, recuperacion_usuario R SET
		U.Id_Procedencia = '{$idProcedencia}', U.Tipo_Procedencia = '{$tipoProcedencia}', U.Tipo_Usuario = '{$tipoUs}', U.Nombre_Usuario = '{$nombreUsuario}', U.Correo_Electronico = '{$mail}' , U.Clave_Usuario = '{$password}', U.Privilegios = '{$privilegios}', R.Pregunta = '{$pregunta}', R.Respuesta = '{$respuesta}', R.Password = '{$pass}' WHERE U.Id_Usuario = {$idUsuario} AND R.Id_Usuario = {$idUsuario} AND U.Id_Usuario = R.Id_Usuario";
		if($db->indeup($query)){

			return true;
		}

		return false;
	}


//This function retrieves the data of the users from an specific User
	function getUsuario($idUsuario){
		$toReturn=array();
		$db=new DB();
		$r=$db->query("SELECT * FROM usuarios U INNER JOIN recuperacion_usuario R ON U.Id_Usuario = R.Id_Usuario
WHERE U.Id_Usuario='{$idUsuario}'");
		if($db->total()>0){
			$user = $db->getRow();
			$toReturn=array("Usuario" => $user['Nombre_Usuario'], "Email" => $user['Correo_Electronico'], "Privilegios" => str_replace("#", ",", $user['Privilegios']), "Pass" => $user['Password'], "Pregunta" => $user['Pregunta'], "Respuesta" => $user['Respuesta'], "Tipo"=> $user['Tipo_Usuario'], "IdProcedencia" => $user['Id_Procedencia'], "TipoProcedencia" => $user['Tipo_Procedencia']);
		}
		$db->close();
		return $toReturn;
	}

//This function retrieves the data of the users from an Hotel or Agency
	function getUsuariosFrom($idProcedencia){

		$toReturn=array();
		$db=new DB();
		
		$where = '';
		if($idProcedencia != -1)$where = "WHERE U.Id_Procedencia='{$idProcedencia}'";
//		echo "SELECT U.Id_Usuario, U.Nombre_Usuario, U.Privilegios, U.Tipo_Usuario FROM usuarios U INNER JOIN recuperacion_usuario R ON U.Id_Usuario = R.Id_Usuario {$where}";
		$r=$db->query("SELECT U.Id_Usuario, U.Nombre_Usuario, U.Privilegios, U.Tipo_Usuario FROM usuarios U INNER JOIN recuperacion_usuario R ON U.Id_Usuario = R.Id_Usuario {$where}");

		if($db->total()>0){
			while($row=$db->getRow()){
				$toReturn[]=array("Id" => $row['Id_Usuario'], "Usuario" => $row['Nombre_Usuario'], "Privilegios" => str_replace("#", ",", $row['Privilegios']), "Tipo"=> $row['Tipo_Usuario']);
			}
		}
		$db->close();
		return $toReturn;
	}
	
	function deleteUser($idUsuario){
		
		$db = new DB();
		
		$query = "DELETE usuarios, recuperacion_usuario FROM usuarios, recuperacion_usuario WHERE usuarios.Id_Usuario={$idUsuario} AND recuperacion_usuario.Id_Usuario={$idUsuario} AND usuarios.Id_Usuario=recuperacion_usuario.Id_Usuario";

		if($db->indeup($query)){

			return true;
		}

		return false;
	}

	
}
?>